perm filename SIG.MAC[4,ALS]1 blob
sn#051782 filedate 1973-07-05 generic text, type T, neo UTF8
00010 TITLE SIG
00020
00030 ENTRY SIG
00040
00050 ;Signature table processing routine. JUNE 29,1973.
00060 ;Designed for 256 word tables.
00070 EXTERNAL USE,LRN,HINT,UPCNT
00080 EXTERNAL INDAT,INCNT,FLAG
00090 EXTERNAL SEGC
00100 EXTERNAL IN1,IN2,IN3,IN4,NAMES,OUTPUT,PARENT
00110 EXTERNAL OUT1,OUT2,OUT3,OUT4,PHW,LRN1,LRN2,LRN3,LRN4
00120
00130 ;Name Contents of arrays used in SIG
00140 ;PHLIST 6-bit name of phonette
00150 ;FLIST 6-bit name of feature
00160 ;HLIST word with 1's at locations corresponding to feature index
00170 ;PARENT POINT word specifying field in an OUTPUT word of PARENT
00180 ;IN1 POINT word to correct number of bits in an INDAT word
00190 ;IN2 POINT word to correct number of bits in an INDAT word
00200 ;IN3 POINT word to correct number of bits in an INDAT word
00210 ;IN4 POINT word to correct number of bits in an INDAT word
00220 ;OUT1 6-bit name of output Ph or Feature
00230 ;OUT2 6-bit name of output Ph or Feature
00240 ;OUT3 6-bit name of output Ph or Feature
00250 ;OUT4 6-bit name of output Ph or Feature
00260 ;LRN1 0 if OUT1 is a Ph or else HLIST type word
00270 ;LRN2 0 if OUT2 is a Ph or else HLIST type word
00280 ;LRN3 0 if OUT3 is a Ph or else HLIST type word
00290 ;LRN4 0 if OUT4 is a Ph or else HLIST type word
00300 ;OUTPUT 4 probability values for the 4 out properties
00310
00320
00330 ;Index register assignments
00340 ;Regester Usage
00350 Z=0 ; general purpose register
00360 I=1 ;Used to index ITEMS IN HEADER TABLES
00370 J=2 ;Used to index within tables
00380 K=3 ;Special purpose indexing and general use when Z not wanted
00390 L=4
00400 M1=5 ;Used to hold counter bit
00410 M2=6 ;Used for the 2nd field
00420 IN=7 ;Used to hold start of INDAT array
00430 M3=10 ;Used for the 3rh field
00440 M4=11 ;Used for the 4th field
00450 S=12
00460 OU=13 ;Reserved exclusively for start of output array
00470 T=14 ;Used to index thru TABLES
00480 H=15 ;Used to hold HINT word
00490 P=16 ;Used to hold start of array PARENT
00500 X=17 ;Used to index in buckets
00510
00520 SIG: 0
00530 MOVEM 17,SAVE+17
00540 MOVE 17,[XWD 0,SAVE]
00550 BLT 17,SAVE+16
00560
00570 SKIPE FLAG
00580 JRST A1 ;Addrtss fields already set up
00590 MOVE Z,IN1 ;Start of array IN1
00600 HRRM Z,IN1A ;Pre set address fields in progral
00610 HRRM Z,IN1B
00615
00620 MOVE Z,IN2
00630 HRRM Z,IN2A
00640 HRRM Z,IN2B
00645
00650 MOVE Z,IN3
00660 HRRM Z,IN3A
00670 HRRM Z,IN3B
00675
00680 MOVE Z,IN4
00690 HRRM Z,IN4A
00700 HRRM Z,IN4B
00705
00710 MOVE Z,OUTPUT
00720 HRRM Z,OUTA
00730 HRRM Z,OUTB
00740 HRRM Z,OUTC
00750 HRRM Z,OUTD
00755
00760 MOVE Z,USE
00770 HRRM Z,USEA
00772
00775 MOVE Z,LRN
00777 HRRM Z,ADDM1
00778 HRRM Z,ADDM2
00779 HRRM Z,ADDM3
00782 HRRM Z,ADDM4
00783
00785 MOVE Z,NAMES
00790 HRRM Z,NAMA
00795
00800 MOVE Z,PARENT
00810 HRRM Z,PARA
00820
00830 MOVE Z,OUT1
00840 HRRM Z,OUT1A
00850 MOVE Z,LRN1
00860 HRRM Z,LRN1A
00870
00880 MOVE Z,OUT2
00890 HRRM Z,OUT2A
00900 MOVE Z,LRN2
00910 HRRM Z,LRN2A
00920
00930 MOVE Z,OUT3
00940 HRRM Z,OUT3A
00950 MOVE Z,LRN3
00960 HRRM Z,LRN3A
00970
00980 MOVE Z,OUT4
00990 HRRM Z,OUT4A
01000 MOVE Z,LRN4
01010 HRRM Z,LRN4A
01015 JRST FINISH
01017
01020 A1: MOVE IN,INDAT ;Required by MAKE made pointers
01030 MOVE OU,OUTPUT
01040 MOVE P,PARENT
01050 SETZ I,
01060 SETZ T,
01070 MOVSI M1,1000
01075 MOVSI M2,1
01080 MOVEI M3,1000
01085 MOVEI M4,1
01090
01100
01110 NAMA: SKIPN 0(I) ;Set to first item in names array
01120 JRST FINISH
01130
01140 IN1A: LDB J,0(I) ;Concatenate for index to line
01150 IN2A: LDB K,0(I) ;IN address fields preset above
01160 LDB L,IN2B ;To get shift value from IN2
01170 LSH J,@L
01180 ADD J,K
01190 IN3A: LDB K,0(I)
01200 LDB L,IN3B
01210 JUMPE L,A2
01220 LSH J,@L
01230 ADD J,K
01240 IN4A: LDB K,0(I)
01250 LDB L,IN4B
01260 JUMPE L,A2
01270 LSH J,@L
01280 ADD J,K
01290 A2: ADD J,T
01292 SKIPG FLAG
01293 JRST L1
01300 USEA: MOVE K,0(J)
01310 PARA: LDB L,0(I)
01320 LDB Z,POINTA
01330 IMUL Z,L
01340 LSH Z,-9
01350 DPB Z,OUTA
01360 LDB Z,POINTB
01370 IMUL Z,L
01380 LSH Z,-9
01390 DPB Z,OUTB
01400 LDB Z,POINTC
01410 IMUL Z,L
01420 LSH Z,-9
01430 DPB Z,OUTC
01440 LDB Z,POINTD
01450 IMUL Z,L
01460 LSH Z,-9
01470 DPB Z,OUTD
01480 ADDI T,400
01490 AOJA I,NAMA
01500
01510 L1:
01550
01560 LRN1A: SKIPE K,0(I)
01570 JRST FEAT1
01580 OUT1A: MOVE K,0(I)
01590 CAME K,PHW
01600 JRST LRN2A
01610 ADDM1: ADDM M1,0(J)
01620 JRST LRN2A
01630 FEAT1: AND K,HINT
01640 JUMPN K,ADDM1
01650
01660 LRN2A: SKIPE K,0(I)
01670 JRST FEAT2
01680 OUT2A: MOVE K,0(I)
01690 CAME K,PHW
01700 JRST LRN3A
01710 ADDM2: ADDM M2,0(J)
01720 JRST LRN3A
01730 FEAT2: AND K,HINT
01740 JUMPN K,ADDM2
01750
01760 LRN3A: SKIPE K,0(I)
01770 JRST FEAT3
01780 OUT3A: MOVE K,0(I)
01790 CAME K,PHW
01800 JRST LRN4A
01810 ADDM3: ADDM M3,0(J)
01820 JRST LRN4A
01830 FEAT3: AND K,HINT
01840 JUMPN K,ADDM3
01850
01860 LRN4A: SKIPE K,0(I)
01870 JRST FEAT4
01880 OUT4A: MOVE K,0(I)
01890 CAME K,PHW
01900 JRST LRNEX
01910 ADDM4: ADDM M4,0(J)
01920 JRST LRNEX
01930 FEAT4: AND K,HINT
01940 JUMPN K,ADDM4
01950 LRNEX: ADDI T,400
01954 AOJA I,NAMA
01960
01970 FINISH: MOVE 17,[XWD SAVE,0]
01980 BLT 17,17
01990 JRA 16,1(16)
02000
02010
02020 SAVE: BLOCK 20
02030 SUM: Z
02040
02050 POINTA: POINT 9,K,8
02060 POINTB: POINT 9,K,17
02070 POINTC: POINT 9,K,26
02080 POINTD: POINT 9,K,35
02090
02100 OUTA: POINT 9,0(I),8
02110 OUTB: POINT 9,0(I),17
02120 OUTC: POINT 9,0(I),26
02130 OUTD: POINT 9,0(I),35
02140
02150 IN1B: POINT 3,0(I),11
02160 IN2B: POINT 3,0(I),11
02170 IN3B: POINT 3,0(I),11
02180 IN4B: POINT 3,0(I),11
02190
02200 END